class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param nums1 int整型vector
     * @param nums2 int整型vector
     * @return int整型vector
     */
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        int n = nums1.size(), m = nums2.size();
        int k = 0;
        vector<int> ret;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (nums1[i] == nums2[j]) {
                    if (k == 0 || (k >= 1 && ret[k - 1] != nums1[i])) {
                        ret.push_back(nums1[i]);
                        k++;
                    }

                }
            }
        }
        return ret;
    }




    // 使用哈希表优化
    // 时间复杂度O(n+m)，空间复杂度O(n)

     vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
       bool vis[1010]={false};
       vector<int> ret;
       for(int i=0;i<nums1.size();i++)
       {
           vis[nums1[i]]=true;
       }
       for(int i=0;i<nums2.size();i++)
       {
        if(vis[nums2[i]])
        {
            ret.push_back(nums2[i]);
            vis[nums2[i]]=false;
        }
       }
       return ret;
    }
};